package com.ruoyi.file.service;


import com.ruoyi.common.core.domain.R;
import com.ruoyi.file.model.vo.FileUploadInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

public interface ChunkUploadService {
    /**
     * 分片上传初始化
     *
     * @param fileUploadInfo 分片上传初始化
     * @return Map<String, Object>
     */
    Map<String, Object> initMultiPartUpload(FileUploadInfo fileUploadInfo);

    /**
     * 完成分片上传
     *
     * @param fileUploadInfo 完成分片上传
     * @return String
     */
    String mergeMultipartUpload(FileUploadInfo fileUploadInfo);

    /**
     * 通过 md5 获取已上传的数据
     *
     * @param md5 String
     * @return Mono<Map < String, Object>>
     */
    R<FileUploadInfo> getByFileMD5(String md5);

    /**
     * 获取文件路径
     *
     * @param bucketName String
     * @param fileName   String
     * @return 路径
     */
    String getFilePath(String bucketName, String fileName);


    /**
     * 单文件上传
     *
     * @param file       file
     * @param bucketName bucketName
     * @return String
     */
    String upload(MultipartFile file, String bucketName);

    Map<String, Object> secondPass(String fileMD5);
}